package org.dromara.common.idempotent.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：自定义注解防止表单重复提交
 */
// 定义注解的继承性，使得子类可以继承父类的注解
@Inherited
// 指定注解应用于方法上
@Target(ElementType.METHOD)
// 指定注解的保留策略为运行时，即在运行时注解仍然有效
@Retention(RetentionPolicy.RUNTIME)
// 指定注解可以被文档工具记录，如API文档生成工具
@Documented
public @interface RepeatSubmit {

    /**
     * 间隔时间(ms)，小于此时间视为重复提交
     */
    int interval() default 5000;

    /**
     * 获取时间单位
     *
     * @return 默认的时间单位，如果被重写则返回指定的时间单位
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     * 提示消息 支持国际化 格式为 {code}
     */
    String message() default "{repeat.submit.message}";

}
